package domain;

import java.util.ArrayList;

import domain.model.iObservable;

import ui.controller.iController;

public class Switcher implements iObserver {
	private ArrayList<iController> controllers = new ArrayList<iController>();
	private int huidigeController = 1;

	public void addController(iController c) {
		controllers.add(c);
		if (controllers.size() >= 2) {
			checkTeken();
		}
	}

	private void checkTeken() {
		for (int i = 0; i < (controllers.size() - 1); i++) {
			controllers.get(controllers.size() - 1).checkTeken(
					controllers.get(i).getSpelerTeken());
		}

	}

	private void volgendeController() {
		for (int i = 0; i < controllers.size(); i++) {
			if (i == huidigeController) {
				controllers.get(i).enable(true);
			} else {
				controllers.get(i).enable(false);
			}
		}
	}

	@Override
	public void update(iObservable subject) {
		volgendeController();
		huidigeController++;
		if (huidigeController == controllers.size()) {
			huidigeController = 0;
		}
		if (controllers.get(huidigeController).checkGameOver()) {
			EindeGame(controllers.get(huidigeController));
		}

	}

	private void EindeGame(iController iController) {
		for (int i = 0; i < controllers.size(); i++) {
			if (controllers.get(i) == iController){
				controllers.get(i).gewonnen();
			}else{
				controllers.get(i).verloren();
			}
		}
		
		iController.askNewGame();
	}
	
	
}
